import { IPSModelObject } from '../../ipsmodel-object';
import { IPSObject } from '../../ipsobject';
import { IPSAppDEField } from '../../app/dataentity/ipsapp-defield';
import { IPSEditorContainer } from '../ipseditor-container';
import { IPSDEGridEditItemUpdate } from './ipsdegrid-edit-item-update';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEGridEditItem
 */
export interface IPSDEGridEditItem extends IPSObject, IPSModelObject, IPSEditorContainer {
  /**
   * 标题
   * @type {string}
   */
  caption: string;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 建立默认值
   * @type {string}
   */
  createDV: string;

  /**
   * 建立默认值类型
   * @description 值模式 [实体属性界面项默认值类型] {SESSION：用户全局对象、 APPLICATION：系统全局对象、 UNIQUEID：唯一编码、 CONTEXT：网页请求、 PARAM：数据对象属性、 OPERATOR：当前操作用户(编号)、 OPERATORNAME：当前操作用户(名称)、 CURTIME：当前时间、 APPDATA：当前应用数据 }
   * @type {( string | 'SESSION' | 'APPLICATION' | 'UNIQUEID' | 'CONTEXT' | 'PARAM' | 'OPERATOR' | 'OPERATORNAME' | 'CURTIME' | 'APPDATA')}
   */
  createDVT: string | 'SESSION' | 'APPLICATION' | 'UNIQUEID' | 'CONTEXT' | 'PARAM' | 'OPERATOR' | 'OPERATORNAME' | 'CURTIME' | 'APPDATA';

  /**
   * 启用条件
   * @description 值模式 [实体表单表单项启用条件] {0：无、 1：建立、 2：更新、 3：全部 }
   * @type {( number | 0 | 1 | 2 | 3)}
   */
  enableCond: number | 0 | 1 | 2 | 3;

  /**
   * 忽略输入模式
   * @description 值模式 [实体表单表单项启用条件] {0：无、 1：建立、 2：更新、 3：全部 }
   * @type {( number | 0 | 1 | 2 | 3)}
   */
  ignoreInput: number | 0 | 1 | 2 | 3;

  /**
   * 输出代码表配置模式
   * @description 值模式 [实体属性界面配置输出代码表配置] {0：无、 1：只输出选择项、 2：输出子项 }
   * @type {( number | 0 | 1 | 2)}
   * @default 0
   */
  outputCodeListConfigMode: number | 0 | 1 | 2;

  /**
   * 列应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getPSAppDEField(): IPSAppDEField | null;

  /**
   * 列应用实体属性
   *
   * @type {IPSAppDEField}
   */
  get psAppDEField(): IPSAppDEField | null;

  /**
   * 列应用实体属性（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 表格编辑项更新对象
   *
   * @type {IPSDEGridEditItemUpdate}
   */
  getPSDEGridEditItemUpdate(): IPSDEGridEditItemUpdate | null;

  /**
   * 表格编辑项更新对象
   *
   * @type {IPSDEGridEditItemUpdate}
   */
  get psDEGridEditItemUpdate(): IPSDEGridEditItemUpdate | null;

  /**
   * 表格编辑项更新对象（必须存在）
   *
   * @type {IPSDEGridEditItemUpdate}
   */
  getPSDEGridEditItemUpdateMust(): IPSDEGridEditItemUpdate;

  /**
   * 重置项名称
   * @type {string}
   */
  resetItemName: string;

  /**
   * 单位名称
   * @type {string}
   */
  unitName: string;

  /**
   * 单位宽度
   * @type {number}
   * @default 0
   */
  unitNameWidth: number;

  /**
   * 更新默认值
   * @type {string}
   */
  updateDV: string;

  /**
   * 更新默认值类型
   * @description 值模式 [实体属性界面项默认值类型] {SESSION：用户全局对象、 APPLICATION：系统全局对象、 UNIQUEID：唯一编码、 CONTEXT：网页请求、 PARAM：数据对象属性、 OPERATOR：当前操作用户(编号)、 OPERATORNAME：当前操作用户(名称)、 CURTIME：当前时间、 APPDATA：当前应用数据 }
   * @type {( string | 'SESSION' | 'APPLICATION' | 'UNIQUEID' | 'CONTEXT' | 'PARAM' | 'OPERATOR' | 'OPERATORNAME' | 'CURTIME' | 'APPDATA')}
   */
  updateDVT: string | 'SESSION' | 'APPLICATION' | 'UNIQUEID' | 'CONTEXT' | 'PARAM' | 'OPERATOR' | 'OPERATORNAME' | 'CURTIME' | 'APPDATA';

  /**
   * 允许空值输入
   * @type {boolean}
   */
  allowEmpty: boolean;

  /**
   * 转化为代码项文本
   * @type {boolean}
   * @default false
   */
  convertToCodeItemText: boolean;

  /**
   * 支持单位
   * @type {boolean}
   * @default false
   */
  enableUnitName: boolean;

  /**
   * 需要代码表配置
   * @type {boolean}
   * @default false
   */
  needCodeListConfig: boolean;
}
